home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Hacker Chronicles - A…the Computer Underground
/
The Hacker Chronicles - A Tour of the Computer Underground (P-80 Systems).iso
/
hack
/
morprime.txt
< prev
next >
Wrap
Text File
|
1992-09-07
|
11KB
|
259 lines
______________________________________________________________________________
RVEC Parameters and DMSTK Format
A Telecom Computer Security Bulletin File
______________________________________________________________________________
RVEC Parameters
The commands RESTOR, RESUME, SAVE, PM, and START process a group of optional
parameters associated with the PRIMOS RVEC vector. These parameters are
stored on disk for every runfile (executable program).
Initial values for the RVEC parameters are usually specified in the PRIMOS
SAVE command, or by LOADer's or SEG's SAVE command when the program was
stored on disk.
Each parameter is a 16-bit processor word, represented by up to six octal
digits.
Memory
Parameter Location Definition
SA -- Starting Address (first memory word used
by program)
EA -- Ending Address (last memory word used
by program)
PC 7 P Register (Program Counter)
A 1 A Register (Arithmetic)
B 2 B Register (Arithmetic)
X 0 Index Register
Keys -- Status keys associated with INK, OTK
instructions
The RVEC parameters are optional in the command string. Any item that is
specified replaces the previous value in RVEC, which is saved with the prog-
ram. Thus, for any parameters that are not specified, the value previously
stored in RVEC is saved with the program
Slash convention: An ordinal value followed by a slash and a value can be used
to set a selected octal parameter without setting other octal parameters. For
example, given the command format:
RESUME pathname [pc] [a] [b] [x] [keys]
the command:
R FILNAM 2/1000
sets the value of the RVEC parameter, B (ie, skip two octal parameters and
then set the third to '1000').
Supplying RVEC parameters: RVEC parameters specified in RESUME or START comm-
ands replace the previous values in RVEC. Also, when a program returns to
PRIMOS through the EXIT subroutine, RVEC is loaded from the processor values
in effect at the time of the exit. Only the SAVE command alters the values of
RVEC stored on disk with the program.
RESTOR returns a program from disk to memory and loads the SAVE parameters
into RVEC in preparation for a START command.
RESUME combines the functions of RESTOR and START.
PM lists the current values of the RVEC parameters.
External commands have RVEC parameters that can be modified at the time the
command is started (eg, PMA filename 1/740). Providing RVEC parameters to a
command that does not need them will cause unpredictable results.
Keys
The item, keys, when specified among RVEC parameters, refers to the processor
status keys handled by the INK and OTK instructions (refer to the System Arch-
itecture Reference Guide). These are represented by a single 16-bit word in
one of the following formats (S-mode and R-mode programs use the first format;
V-mode and I-mode programs use the second).
Keys (SR)
Process status information is available in a word called the keys, which can be
read or set by the program. It's format is as follows:
_______________________________________________________________
| | | | | | |
| C | DBL | -- | Mode | 0 | Bits 9-16 of location 6 |
|_____|_______|______|________|_____|___________________________|
1 2 3 4-6 7-8 9 --- 16
C (Bit 1) Set by arithmetic error conditions
DBL (Bit 2) 0 - Single Precision, 1 - Double Precision
001 32S
Process status information is available in a 16-bit register known as the keys.
It may be referenced by the LPSW, TKA, and TAK instructions.
_____________________________________________________________________________
| | | | | | | | | | | | |
| C | 0 | L | M | F | X | LT | EQ | DEX | 0-0 | I | S |
|_____|_____|_____|_____|_____|_____|______|______|_______|_______|_____|_____|
1 2 3 4-6 7 8 9 10 11 12-14 15 16
C (Bit 1) C-bit
L (Bit 3) L-bit
MODE (Bits 4-6) Addressing Mode:
000 16S
001 32S
011 32R
010 64R
110 64V
100 32I
F (Bit 7) Floating point exception disable:
0 take fault
1 set C-bit
X (Bit 8) Integer exception enable:
0 set C-bit
1 take fault
LT (Bit 9) Condition code bits:
EQ (Bit 10) LT set if result is negative
EQ set if result is zero
DEX (Bit 11) Decimal exception enable:
0 set C-bit
1 take fault
I (Bit 15) In dispatcher -- set/cleared only by process exchange
S (Bit 16) Save done -- set/cleared only by process exchange
C-bit (VI): Set by error conditions in arithmetic operations and by shifts.
L-bit (VI): Set by an arithmetic or shift operation except IRS, IRX, DRX.
Equal to carry out of the most significant bit (Bit 1) of an arithmetic
operation. It is valuable for simulating multiple-precision operations and
for performing unsigned comparisons following a CAS or a SUB.
Condition code bits (VI): The two condition code bits are designated "EQ" and
DMSTK Format
The DMSTK command traces the sequence of calls and returns by which the user's
process arrived at its current state. Machine states for internal commands,
condition frames, and fault frames are preserved on the user's command stack.
In addition, the most recent activation of a static mode program or dump on the
terminal or into a COMOUTPUT file. As it is an internal command, it does not
overwrite the static mode stack, and so does not preclude re-entry into the
faulting program.
The DMSTK command has several options. These options may be used in any order
aout in octal. The command syntax is as follows:
Option Definition
done in full format (since "full format" is the default, there
with the most recent condition frame (if there is one) or with
vation (ie, frame) that is dumped is to be produced.
DMSTK lists each stack frame in the following general format (for an explan-
ation of the registers and the rings involved, see the System Architecture
Reference Guide):
(nn) offset: Owner= procname (LB= ownerlb).
Called from pcl_addr; returns to return_addr.
The information is as follows:
Argument Definition
nn Frame index number of the stack frame
offset The word number in the current stack segment where
this activation's stack frame begins
procname The name (if available) of the procedure that owns
this stack frame
ownerlb The stack value of the LB (linkage base) register
belonging to the procedure that owns the stack frame
pcl_addr Address of the PCL instruction that caused the
procedure to be invoked
return_addr The address to which the procedure will return
If the frame is a fault frame, the following format is used:
(nn) offset: FAULT FRAME; fault type = fault type.
Fault returns to ret_pb; LB= faulter_lb, keys= faulter_keys.
Fault code= fcode; fault addr= faddr.
Registers at time of fault:
000001 000002 000003 000004 000005 000006
000007 000010 000011 000012 000013 000014
000015 000016 000017 000020 000021 000022
000023 000024 000025 000026 000027 000030
Argument Definition
fault-type Location in the fault table of the type of fault
that occurred
ret_pb Address to which the fault returns
faulter_lb LB register belonging to the procedure in which
the fault occurred
faulter_keys CPU keys at the time of the fault
register data If present, a direct dump of the register save area
(in the same format as that produced by the CPU RSAV
instruction)
fcode Fault code generated by this particular fault
faddr Fault address generated by this particular fault
If the activation is a condition frame, the following format is used:
(nn) offset: CONDITION FRAME for "condition_name"; returns to ret_pb.
Condition raised at sigloc; LB= siglb; keys= sigkeys.
[(Crawlout to outerpb; LB= outerlb; keys= outerkeys.)]
[Registers at time of fault in inner ring:
Save Mask= ssssss; XB= xb_value
000001 000002 000003 000004 000005 000006
000007 000010 000011 000012 000013 000014
000015 000016 000017 000020 000021 000022
000023 000024 000025 000026 000027 000030]
The latter two frames are displayed only if the condition was signalled in an
inner ring and subsequently a crawlout to the current ring occurred.
If, during the trace, the stack switches to a different segment, DMSTK will
print, "STACK SEGMENT IS xxxx", giving the octal segment number of the new
stack segment.
Note
A called-from or return-to value such as 0(0)/0 or 0(0)/177776 usually means
that the stack frame has an invalid return point and can never return. An
example of such a frame is the first frame set up by SEG in a V-mode Static
Mode program.
Downloaded From P-80 Systems 304-744-2253